PRD-001: Project Scaffold
Overview
Set up the datapact-cmmc repository with a working development environment: FastAPI backend, React frontend, PostgreSQL database, and all tooling (uv, Vite, Alembic, Makefile).
Goals
- Developers can run
make dev-alland have backend (8001) + frontend (5174) running - Health endpoint responds at
/api/health - Database connection to PostgreSQL on port 5433
- Alembic migration infrastructure ready
- Frontend renders a shell layout with sidebar navigation
- Test infrastructure passes with basic smoke tests
Deliverables
Backend
pyproject.tomlβ uv project with FastAPI, SQLAlchemy, Alembic, httpx, JWT auth depsdocker-compose.ymlβ PostgreSQL 16 on port 5433 (db: cmmc, user: cmmc)Makefileβ install, dev-backend, dev-frontend, dev-all, test, build, db-* targetsalembic.ini+alembic/env.pyβ migration infrastructurecmmc/app.pyβ FastAPI app with CORS, health endpoint, lifespancmmc/config.pyβ env-var configurationcmmc/database.pyβ engine, session, get_db dependencycmmc/models/base.pyβ BaseModel (16-char hex UUID, timestamps, creator, row_version)cmmc/errors.pyβ shared HTTP exception classes- Package stubs:
schemas/,services/,routers/,middleware/,dependencies/
Frontend
ui/package.jsonβ React 19, React Router 7, TailwindCSS 4, DaisyUI 5, Recharts, Vitestui/vite.config.tsβ Vite + React + Tailwind plugin, API proxy to :8001ui/tsconfig.jsonβ TypeScript config with@/path aliasui/src/App.tsxβ Router shell with placeholder pages (Dashboard, CMMC Library, Assessments)ui/src/components/AppLayout.tsxβ Sidebar + content layoutui/src/index.cssβ TailwindCSS + DaisyUI with custom CMMC light/dark themes- Module directory stubs: auth, dashboard, cmmc, assessments, evidence, findings, poam, datapact, reports, admin
Data
data/cmmc/domains.yamlβ 14 CMMC domainsdata/cmmc/level1_practices.yamlβ 17 Level 1 practices- Placeholder files for Level 2, Level 3, and demo assessment
Testing
tests/conftest.pyβ SQLite-backed test fixturestests/test_health.pyβ health endpoint smoke testui/src/App.test.tsxβ basic render test
Other
.gitignore.claude/CLAUDE.mdβ project instructions for Claude Code
Verification
make db-startstarts PostgreSQLmake dev-allstarts backend on 8001 + frontend on 5174curl http://localhost:8001/api/healthreturns{"status": "ok"}- Frontend shows sidebar layout with navigation
make test-backendpasses health testcd ui && npm testpasses render test
Status
Complete β all deliverables created in Phase 1.